- 主题:静态成员问题
【 在 DorD 的大作中提到: 】
: 在指针里,→与=有什么区别?比如:class A{private : int num;} A a; a.num=1; A *p=&a.num与 p→a.num有啥区别?
1,定义指向函数的指针可以不定义参数个数吗?
2,不加 类名::而定义的函数指针是不是不可以指向该类的成员函数?
3,还是不知道→与=的区别。
--
FROM 36.143.165.*
我终于理解了类是个啥东西了,对象作为类的实例,它只包含数据,它调用的函数仍然还在类中,对象不是类一模一样的拷贝,对象自身不带函数。
--
FROM 36.143.165.*
【 在 easior 的大作中提到: 】
: 就这么短的时日,见解比我深刻
: :我终于理解了类是个啥东西了,对象作为类的实例,它只包含数据,它调用的函数仍然还在类中,对象不是类一模一样的拷贝,对象自身
谢谢您的鼓励!
我写了这么一段,想看看无参的构造函数构造了个啥,可惜跑不起来
#include<iostream>
using namespace std;
class Point
{
private: int x,y;
public:Point(){};
Point(int a ,int b){x=a;y=b;}
void Display01()
{
cout<<x<<"\n"<<y<<endl;
}
}
int main()
{
Point a; a.Display01();
Point b(3,10);b.Display01();
return 0;
}
--
FROM 36.143.165.*
【 在 ylh1969 的大作中提到: 】
: 等号是赋值,箭头是指针的成员。
我明白了,等号左边一般是变量的地址,右边是给这个变量赋的值。箭头是让指针指向这个变量,此刻指针里的地址就是该变量的地址,我说的对吗?
--
FROM 36.143.165.*
【 在 ylh1969 的大作中提到: 】
: 这个a,是存在全局静态区的,所有new出来的新对象都是使用同一个地址。new一个,初始化一个就会把之前已经使用的值冲了。
类模板只是数据类型不同,而操作类似?
--
FROM 36.143.165.*
【 在 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.*
动态多态可以这样理解吗?
虚函数是在基类里出现,生成派生类对象,根据数据类型调用基类的指针指向该对象对应的派生类里的函数
--
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.*