- 主题:静态成员问题
这个a,是存在全局静态区的,所有new出来的新对象都是使用同一个地址。new一个,初始化一个就会把之前已经使用的值冲了。
【 在 DorD 的大作中提到: 】
: 在类中声明了一个静态变量:static int a ;
: 在类外初始化,int 类名::a=1;,这里这个int不写可以吗?
--
FROM 119.180.155.*
【 在 ylh1969 的大作中提到: 】
: 这个a,是存在全局静态区的,所有new出来的新对象都是使用同一个地址。new一个,初始化一个就会把之前已经使用的值冲了。
类模板只是数据类型不同,而操作类似?
--
FROM 36.143.165.*
没明白你说的啥
【 在 DorD 的大作中提到: 】
: 类模板只是数据类型不同,而操作类似?
--
FROM 119.180.155.*
cpp11 之后,直接inline static int a = 2;类内赋值就可以了
【 在 DorD 的大作中提到: 】
: 在类中声明了一个静态变量:static int a ;
: 在类外初始化,int 类名::a=1;,这里这个int不写可以吗?
--
FROM 36.110.46.*
【 在 ylh1969 的大作中提到: 】
: 没明白你说的啥
类模板实例化的类要求
比如:template<class NameType,class AgeType>
class Person
{
......
在template<>这里,后边两个参数没有定义类型,而当传递给这个类实参后,根据实参的类型直接初始化对象?(这里模板类仅仅起了一个暂存类型的作用,因为不可能在接收了实参后就把模板类型固定下来,当然类中肯定得有相应个数的数据成员去接收实参,然后实例化),其余的操作与普通类一样。但是模板类是不是定义了比如2个类内的数据成员,只能就传2个,template<>尖括号里边也只能写两个形参?
--
FROM 60.8.176.*
【 在 namelij 的大作中提到: 】
: cpp11 之后,直接inline static int a = 2;类内赋值就可以了
前面还得加inline?我以后就这么写得了,我后来翻看了一下,static不让类内赋值,是怕对象实例化的时候覆盖了原值?实例化多个对象从而造成static失去了固有的意义。这里有点深度了,我不知道该怎么理解。
--
FROM 60.8.176.*
这块跟ODR 即One definition Rule 有关,可以了解下这
【 在 DorD 的大作中提到: 】
:
:
: 前面还得加inline?我以后就这么写得了,我后来翻看了一下,static不让类内赋值,是怕对象实例化的时候覆盖了原值?实例化多个对象从而造成static失去了固有的意义。这里有点深度了,我不知道该怎么理解。
--
FROM 36.110.46.*
动态多态可以这样理解吗?
虚函数是在基类里出现,生成派生类对象,根据数据类型调用基类的指针指向该对象对应的派生类里的函数
--
FROM 183.198.70.*
【 在 namelij 的大作中提到: 】
: 这块跟ODR 即One definition Rule 有关,可以了解下这
我查了一下,这叫单定义规则。无论声明多少次,只能定义一次,是这样吗?
--
FROM 183.198.70.*
关于类模板,我写了一个自己的理解,大神们给看看对吗?
定义语法:template<class T >
class 类名{类体};
//类里边定义的变量都是T类型的,比如:T x,T y(等价于int x, int y)
类体里边的函数类型也是T类型的,比如: T fun{return 0};
构造函数的形参类型也是T,比如 类名(T x, T y),在类体外定义成员函数时,必须用template重写模板类声明(还是这个template<class T >)
在类体外定义成员函数,这样写:T 类名<T>::成员函数名(形参){函数体}:
但在调用的时候,就直接:类名<数据类型>对象名(实参1,...实参)
(比如int) (比如1,2,3....)
--
FROM 183.198.70.*