k**********3 发帖数: 3 | 1 关于类的疑问
1,在类的定义中,即在class的大括号里,是不是只能放函数定义,函数声明,变量定
义,变量声明这四类语句?
2,在private部分可以放函数定义或申明吗?同理在public可以放变量声明或定义吗?
3,某对象的成员函数可以访问同类的其他对象的数据(通过传入引用),无论其是
private or public,但是不能访问不同类型对象的private数据,但是可以访问其
public数据?
4,我看的书是《c++程序设计语言特别版》,在看类时(P203),发现他在声明成员函数
,若没有参数,也不写void,而是直接一个空括号,如果没有返回值 也不写void,还有
,是不是构造函数都没有返回值?
5,成员初始化是不是就两种:用初始化式;或用构造函数,且前者优先级高?用初始化
式什么意思,直接在成员变量申明的时候直接赋值语句吗?
6,关于成员常量的问题:
书上说了“对于静态常量整型成员,可在常量成员声明加上一个常量表达式作为初始式
”,但对于其他类型的常量呢?怎么初始化啊?
7,关于自定义类型的数组的初始化
书上也说了,“若在构造某个类的对象时可以不提供显式的初始式,则可以 | f*****Q 发帖数: 1912 | 2 首先最好能在标题或者帖子开头说明是C++,首先声明俺很久不用C++了,不一定说的对
,抛砖引玉。
1,看不懂。
2,函数可以是private,protected或者public。变量也可以是private, protected或
者public。实例变量好像不能在这里定义吧?
3,不能访问同类对象的private part。friend可以访问其他类对象的private part。
子类可以访问父类(不确定是不是这么叫)的protected部分,但是private不行。
4,构造函数没有返回值。没返回值不写void俺不太确定,俺记着没返回值的函数的缺
省返回值是int,不是void。
5,你说的初始化式大概是
classA::ClassA():variableA(0),variableB(4+someOutsideVariable){
...
}
中
variableA(0),variableB(4+someOutsideVariable)这一部分。
俺记着C++里面类实例变量是不可以在声明的时候直接赋值的。
6,其他的实例变量里面的constant可以在类初始化的时候赋值。
7,看不
【在 k**********3 的大作中提到】 : 关于类的疑问 : 1,在类的定义中,即在class的大括号里,是不是只能放函数定义,函数声明,变量定 : 义,变量声明这四类语句? : 2,在private部分可以放函数定义或申明吗?同理在public可以放变量声明或定义吗? : 3,某对象的成员函数可以访问同类的其他对象的数据(通过传入引用),无论其是 : private or public,但是不能访问不同类型对象的private数据,但是可以访问其 : public数据? : 4,我看的书是《c++程序设计语言特别版》,在看类时(P203),发现他在声明成员函数 : ,若没有参数,也不写void,而是直接一个空括号,如果没有返回值 也不写void,还有 : ,是不是构造函数都没有返回值?
| t****t 发帖数: 6806 | 3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你错了. OP说的是对的. 可以access同类对象的private.
构造函数没有返回值, 也不能写返回void.
其它不返回值的函数必须声明void. 如果不写返回类型, 编译是通不过的, 这点和C不
一样. 没有缺省返回什么类型这一说.
【在 f*****Q 的大作中提到】 : 首先最好能在标题或者帖子开头说明是C++,首先声明俺很久不用C++了,不一定说的对 : ,抛砖引玉。 : 1,看不懂。 : 2,函数可以是private,protected或者public。变量也可以是private, protected或 : 者public。实例变量好像不能在这里定义吧? : 3,不能访问同类对象的private part。friend可以访问其他类对象的private part。 : 子类可以访问父类(不确定是不是这么叫)的protected部分,但是private不行。 : 4,构造函数没有返回值。没返回值不写void俺不太确定,俺记着没返回值的函数的缺 : 省返回值是int,不是void。 : 5,你说的初始化式大概是
| t****t 发帖数: 6806 | 4 6. 我假设你问的是其它类型的*静态*常量. 你必须在别处定义的时候初始化, 比如:
// A.h
#include
class A {
static const std::string s; // declaration
static const int x=0; // declaration and definition
};
// A.cpp
#include "A.h"
const std::string A::s="the constant string"; // definition
const int A::x; // this line is not required. but some compiler may
incorrectly insist on it.
6,关于成员常量的问题:
书上说了“对于静态常量整型成员,可在常量成员声明加上一个常量表达式作为初始式
”,但对于其他类型的常量呢?怎么初始化啊?
7,关于自定义类型的数组的初始化
书上也说了,“若在构造某个类的对象时可以不提供显式的初始式,则可以直接定义,
不必写初始化式
【在 k**********3 的大作中提到】 : 关于类的疑问 : 1,在类的定义中,即在class的大括号里,是不是只能放函数定义,函数声明,变量定 : 义,变量声明这四类语句? : 2,在private部分可以放函数定义或申明吗?同理在public可以放变量声明或定义吗? : 3,某对象的成员函数可以访问同类的其他对象的数据(通过传入引用),无论其是 : private or public,但是不能访问不同类型对象的private数据,但是可以访问其 : public数据? : 4,我看的书是《c++程序设计语言特别版》,在看类时(P203),发现他在声明成员函数 : ,若没有参数,也不写void,而是直接一个空括号,如果没有返回值 也不写void,还有 : ,是不是构造函数都没有返回值?
| f*****Q 发帖数: 1912 | 5 嗯,老大出手肯定错不了。
【在 t****t 的大作中提到】 : 6. 我假设你问的是其它类型的*静态*常量. 你必须在别处定义的时候初始化, 比如: : // A.h : #include : class A { : static const std::string s; // declaration : static const int x=0; // declaration and definition : }; : // A.cpp : #include "A.h" : const std::string A::s="the constant string"; // definition
|
|