由买买提看人间百态

topics

全部话题 - 话题: endl
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
o******r
发帖数: 259
1
来自主题: Programming版 - C++ interview questions help

I tried with following code. It works without problem.
class A {
public:
int i;
};
class B : public A { }; // definitions of classes, these are OK
void Foo() {
A & a = B(); // ??
a.i = 1;
cout << a.i<
A * p = &B(); // ??
p->i = 2;
cout << p->i< }
reallocate a memory block with size 1020?
use new instead?
这样放狗查一下就知道了,估计没多少人用过
好象在哪见过用函数指针转换的
o******r
发帖数: 259
2
那是你没写对吧,(char*)((const char*)s)
试试下面这个:
const char chT1[] = "Hello!";
const char* pch1 = chT1;
cout << pch1 < char* pch2 = (char*)chT1;
pch2[5] = '?';
cout << pch2 <
c*s
发帖数: 5
3
来自主题: Programming版 - random number generator in C++
cout << rand()%100/100. << endl;
cout << rand()%1000/1000. << endl;
...
depends on how many digits you want the accuracy.
c*********n
发帖数: 128
4
来自主题: Programming版 - C++里面
just tested the following code. it compiled.
#include
using namespace std;
class Feed{};
class Apple{
public:
Feed feed;
};
int main() {
Apple apple;
cout << (long) &apple << endl;
cout << (long) &apple.feed << endl;
}
$ ./a.out
140735076833951
140735076833951
h**o
发帖数: 347
5
来自主题: Programming版 - C++ questions
我的意思是说这样会丢失polymorphism啊~
#include
using namespace std;
class A{
public:
virtual void f() { cout << "As class A" << endl; }
};
class B: public A{
public:
virtual void f() { cout << "As class B" << endl; }
};
void f( A a )
{ a.f(); }
int main()
{
B b;
f(b);
return 0;
}
h**o
发帖数: 347
6
来自主题: Programming版 - 两个继承问题
1. 现在有AB两个类,由于AB的constructor比较大,又只有f()不相同
我想在初始化B的时候实现动态绑定,请问怎么样可以实现?不成功的代码如下
#include
using namespace std;
class A{
public:
A() { f(); }
virtual void f() { cout << "As class A" << endl; }
};
class B: public A{
public:
B():A() { }
virtual void f() { cout << "As class B" << endl; }
};
int main()
{
B b;
return 0;
}
输出结果为As class A
2. 这个我不太清楚是不是compiler的问题还是什么特别规则,感觉非常奇怪
#include
using namespace std;
class A{
public:
virtual void f() { cout << "As class A" << end
G****A
发帖数: 4160
7
// main.cpp
// 10005
#include
#include
using namespace std;

class Monitor {
int num;
public:
Monitor() { num = 1; }
// ~Monitor() {cout<<"des11"< void incident() { num++; }
void decrement() { num--;}
void print() { cout<<"The times of incident :"< }
};

class Monitor2 {
Monitor *m;
public:
Monitor2(Monitor * mm): m
s*****n
发帖数: 1279
8
来自主题: Programming版 - a very simple c++ question
Both try1.cpp and try2.cpp can be complied, but only try1.cpp works. when I
run try2.cpp, I always got "Segmentation fault". So what is wrong with try2
.cpp? why I can't use ifstream pointer? Thank you!
try1.cpp
#include
#include
#include
using namespace std;
int main()
{
ifstream gains("coeff.txt");
if (!gains.is_open())
{
cout<<"coeff.txt could not be opened! " < }
else{
cout<<"coeff.txt is open"< }
return
F*****n
发帖数: 1552
9
来自主题: Programming版 - C++疑问
关于private里面定义virtual function的两个问题。对于以下程序,
1. a->foo()编译不能通过,说是访问了private member.这是不是表明private里面定
义virtual function毫无意义啊?
2. 既然不被允许访问private member, 这说明complier还是把*a当作B的Object. 然而
a->foo2()也不能通过,因为A没有这个function。为什么作为B的Object连自己public
的member都不能访问呢?
#include
using namespace std;
class A {
int a;
virtual void foo(){
cout << "A:foo" << endl;
}
};
class B:public A{
int b;
void foo(){
cout << "B:foo" << endl;
}
public:
void foo2(){
cout <<
b*********n
发帖数: 1258
10
#include
using namespace std;
void* strcopy(char* in_str){
char* out_str;
if(out_str=(char*)malloc(sizeof(in_str)+1)){
out_str=(char*)memcpy(out_str,in_str,sizeof(in_str)+1);
return out_str;
}else{
cout << "Insufficient Memory" << endl;
return NULL;
}
}
int main(int argc, char* argv[])
{
char* a="abcdefghijklmn";
cout << (char*)strcopy(a) << endl;
return 0;
}
s******u
发帖数: 247
11
来自主题: Programming版 - 请教一个作用域的问题
#include
using namespace std;
int main() {
int M=20;

int M=-303340;
cout<<"Local M="< }
cout<<"Main M="< }
如果我想在这个block中访问外部的M,是不是只能用指针来访问?有没有什么办法在前
面加上作用域来区分啊?
谢谢。
m******t
发帖数: 4077
12
来自主题: Programming版 - c++ 得最基本问题
一个linked list实现的stack
myStack ss;
ss.push('c');
ss.push('a');
cout < 这样输出的结果是 ca
myStack ss;
ss.push('c');
ss.push('a');
char s1 = ss.pop();
char s2 = ss.pop();
cout < 这样就对了,输出的结果是 ac
请问问题出在哪里?谢谢。
m*******o
发帖数: 264
13
来自主题: Programming版 - 为什么不能成功排序
我重载了<运算符啊,所以类对象也应该可以进行比较啊
if ( *A[1] < *A[2] ) //test the operator whether works for
the object
cout << "yes" < else
cout << "no" << endl;
上面这段代码就说明<成功重载了啊
c*********n
发帖数: 128
14
来自主题: Programming版 - A C++ private member function problem
Huh, that's interesting. I cannot understand either.
I revised the code a little bit to make the problem even more obvious:
//**************************code ******************************************
#include
using namespace std;
class A{
private:
string name;
private:
void init();
public:
A(string name):name(name){}
void foo(A& a);
};
void A::foo(A& a) {
a.init();
cout << "The parameter's name is " << a.name < }
void A::init() {
cout << "This is " << name << endl;
}
int main()
G****A
发帖数: 4160
15
来自主题: Programming版 - C++小程序查错
下面这段程序编译没有错误,执行后windows却弹出错误提示框,请帮我看看怎么回事.谢谢
template
void display(const string &msg, const vector &vec)
{
elemType t = vec[0];
cout< cout< }
int main()
{
string a = "Hello";
vector ivec;
ivec[0] = 7;
display(a, ivec);

return 0;
}
e******m
发帖数: 30
16
来自主题: Programming版 - 这样一道面试题 (转载)-debug求助
【 以下文字转载自 JobHunting 讨论区 】
发信人: ewaldsum (ewaldsum), 信区: JobHunting
标 题: Re: 这样一道面试题
发信站: BBS 未名空间站 (Mon Feb 11 15:19:16 2008), 转信
我用F90。偶尔会遇到类似的BUG。
如果没有WRITE语句,程序正常运行,不报错,但是结果是错的。
中间添加一个WRITE语句,程序就报错(或者结果就突然对了)
这是为什么啊?哪个高手指点一下?
一段代码:
try{
Object A("aaa");
A.do();
// cerr<<"what's problem?"< }catch(exception& e){
cerr<<"not handling"< }
现象:如果 A.do() 发生异常,这个 exception 并没有被 catch 捕捉到并处理。但是
,如果添加任意一个 cerr statement 在 try block,如 comment 所示,异常就被捕
捉并正确处理。
问题:可能是什么原因造成这个现象?如何解决?(显然,通过添加一
z******i
发帖数: 59
17
来自主题: Programming版 - 请教 C++的一个困惑 (operator delete)
You don't define "delete" operator be virtual. You make destructor virtual.
See below.
#include
#include
using namespace std;
class A
{
public:
virtual ~A()
{
cout << "I am A\n";
}
//void operator delete(void* p, size_t size){cout << size << endl;};
private:
int k;
};
class B:public A
{
public:
virtual ~B()
{
cout << "I am B\n";
}
//void operator delete(void* p, size_t size){cout << size<
j*****k
发帖数: 1198
18
来自主题: Programming版 - iterator一问
template
void lstack::print(ostream& os)
{
if(data==NULL) return;
vector::iterator i; // error: expected `;' before ‘i’
for(i=data->begin(); iend();i++) //error: ‘i’ was not
declared in this scope
os< os< return;
};
大家帮忙看看,这两个错误怎么回事?不解。用的是gcc version 4.1.3 20070929
c*********n
发帖数: 128
19
来自主题: Programming版 - Does this function have memory problem?
Does this function have memory problem?
void pushSomthingIntoVector(vector & v) { //T is a class
v.assign(0, T(100)) //T(int a) is a constructor of class T
v.push_back(T(50))
}
void anotherFunction() {
vector v;
pushSomethingIntoVector(v);
cout << v[0] << endl;
cout << v[1] << endl;
}
T(100) and T(50) are created locally within the function
pushSomthingIntoVector(vector & v), does it exsit outside of the function
? say, in the two lines of "cout" ?
Should I change the code as follows:
d*********1
发帖数: 25
20
来自主题: Programming版 - a C++ interview question..........
what are the results of the folloing output?
it has been tested: 1st--> c; 2nd --> c++
anybody knows why?

float x=0.7;
if(x<0.7)
printf(" c");
else
printf("c++");
cout< x=0.8;
if(x<0.8)
printf(" c");
else
printf("c++");
cout<
I****k
发帖数: 35
21
来自主题: Programming版 - 经典C++问题求助
Given the class definition as follows, what the output of B objB ?
class A{
public: A(){this->foo();}
virtual void foo()=0 {cout<<"A::Foo()"< };
class B : public A{
public: B(){this->foo();}
virtual void foo(){cout<<"B::Foo()"< };
The output should be
A::Foo()
B::Foo()
原因是不是因为this只能表示当前的对象?还是因为vtable在ctor的时候还没有建立起
来?多谢了,我的概念不是很清楚。。。
n**d
发帖数: 9764
22
来自主题: Programming版 - indent C++ source code by VC++ 6.00
Thanks! How could you find it?! Is there any icon?
It works, but someting like this:
#define D(A) T << #A << endl; A
int main() {
ofstream T("format.out");
//assure(T);
D(int i = 47;)
D(float f = 2300114.414159;)
const char* s = "Is there any more?";
D(T.setf(ios::unitbuf);)
D(T.setf(ios::showbase);)
D(T.setf(ios::uppercase | ios::showpos);)
D(T << i << endl;) // Default is dec
...
}
w***g
发帖数: 5958
23
来自主题: Programming版 - 关于c++的constructor的面试题
你怎么知道cout << "b" << endl; 是b()做的第一件事?
正确的理解是b()在调用cout << "b" << endl;之前先调用了a(), 然后逐个调用
member constructor。这些东西可以在b()的初始化列表中显式指定,但不要认为你不
给初始化列表它们就不在了。弄完这些b()才开始执行函数体里你给出的代码。
真正的顺序是b a c。
n**d
发帖数: 9764
24
来自主题: Programming版 - C++: static_cast and dynamic_cast
Can you expain the output of the following code?
d1d = 0
Dog
d1s = 7275136
Dog
d2d = 7275136
Cat
d2s = 7275136
Cat
#include
using namespace std;
class Pet { public: virtual ~Pet(){}};
class Dog : public Pet {
public:
void print() { cout << "Dog" << endl; };
};
class Cat : public Pet {
public:
void print() { cout << "Cat" << endl; };
};
int main() {
Pet* b = new Cat; // Upcast
// Try to cast it to Dog*:
Dog* d1d = dynamic_cast(b);
Dog* d1s = static_cast
n**d
发帖数: 9764
25
来自主题: Programming版 - C++: static_cast and dynamic_cast
In this code, could we say Dog::print() overrides Pet::print()?
class Pet {
public:
void print() {cout << "Pet" << endl;}
virtual ~Pet(){}
};
class Dog : public Pet {
public:
void print() { cout << "Dog" << endl; };
};
m********a
发帖数: 1312
26
来自主题: Programming版 - C++: static_cast and dynamic_cast
借用你的例子:
#include
using namespace std;
class Pet {
public:
virtual void print() {cout << "Pet" << endl;}
virtual ~Pet(){}
};
class Dog : public Pet {
public:
void print() { cout << "Dog" << endl; };
};
int main() {
Pet * p = new Dog();
p->print();
return 0;
}
This will print "Dog". And this is why print function needs to be virtual in
Pet class. Without the virtual declaration, it will print "Pet".
f********a
发帖数: 1109
27
来自主题: Programming版 - 问一个简单的C++问题
有一段代码vector.h和vector.cc
[CODE]//vector.h
int add(int x, int y);
//vector.cc
#include
int add(int x, int y){
return (x+y);
}
int main(){
std::cout< return 0;
}
[/CODE]
显然我不需要include "vector.h"就可以编译成功。因为编译器自动会找vector.h
但是当我用了namespace以后:
[CODE]//vector.h
namespace TEST{
int add(int x, int y);
}
//vector.cc
#include
#include "vector.h"
int TEST::add(int x, int y){
return (x+y);
}
int main(){
std::cout< retur
w***g
发帖数: 5958
28
来自主题: Programming版 - C++命名空间和算子重载
自己动手试了一下,发现用下面的方法可以解决这个问题。
#include
using namespace std;
class A {
};
namespace n1 {
const A& operator ++ (A &a) {
cout << "n1" << endl;
return a;
}
}
namespace n2 {
const A& operator ++ (A &a) {
cout << "n2" << endl;
return a;
}
}
using namespace n1;
using namespace n2;
int main ()
{
A a;
n1::operator ++(a);
n2::operator ++(a);
return 0;
}
K****n
发帖数: 5970
29
来自主题: Programming版 - 一个指向指针的指针的引用?
是不是通过,比如,char**& 来定义?以下代码在vc2008 cl name.cpp /Za编译:
#include
using namespace std;
void PtPtRef(char**& pprc){
(pprc)++;
}
int main(){
char c[] = {'A','B','C','D','E','F','G'};
char* pc=0;
for(int i=0; i pc = c+i;
cout<<*pc< PtPtRef(&pc);
cout<<*pc< }
return 0;
}
得:can not convert parameter 1 from 'char **' to 'char **&'
怎么改呢?
谢谢!
g*********8
发帖数: 53
30
来自主题: Programming版 - C++ 的 问题
why it is undefined?
I can run the program.
but when I print like this
{{{
...
cout<<*q<<" "< cout< }}}
the output is:
4 0012FED4
5 0012FED4
what is the reason?
g*********s
发帖数: 1782
31
来自主题: Programming版 - RH3/RH4上cout默认格式问题
#include
#include
#include
#include
int main(){
float f = 0.0001;
printf("f = %f\n", f);
printf("f = %g\n", f);
printf("f = %e\n", f);
std::cout <<"f = "< std::cout.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield);
std::cout <<"f = "< }
RH3:
f = 0.000100
f = 1e-04
f = 1.000000e-04
f = 1e-04
f = 1e-04
RH4:
f = 0.000100
f = 0.0001
f = 1.000000e-04
f = 0.0001
f = 0.0001
有啥办法统一格式么?机器是RH3/RH4都有。改程序也
O***e
发帖数: 89
32
来自主题: Programming版 - A aimple C++ question
I know the meaning of argc and argv, but why argc=3 is required in many
programs, the following is an example.
#int main(int argc, char * argv[])
#{
#char chline[LINESIZE+1];
#const char * self=argv[0];
#const char * ipfile=argv[1];
#const char * opfile=argv[2];
#if ( ! (argc==3))
#{
#if (argc<3)
#cout<<"\n\nerror: too few arguments"< #if (argc>3)
#cout<<"\n\nerror: too many parameters"<
E*****7
发帖数: 128
33
来自主题: Programming版 - A aimple C++ question
#if ( ! (argc==3))
这是测试在命令行执行该文件时,文件名的后面是不是带有两个参数:
C:\ExeThisCode para_1 para_2
后面:
#if (argc<3)
#cout<<"\n\nerror: too few arguments"< #if (argc>3)
#cout<<"\n\nerror: too many parameters"< 程序员要求在命令行执行该文件时文件名的后面必须带有两个参数,否则给出错信
息(参数太少,参数太多)。
j*****j
发帖数: 115
34
来自主题: Programming版 - 这个地址咋回事?
int main()
{
char a='a';
char b='b';
cout<<&a-&b< }
输出结果为12,但我觉得是1才对,请问这是怎么回事?
int main()
{
int a=1;
int b=2;
cout<<&a-&b< }
输出结果为3,我觉得为4才对呀...
c*****t
发帖数: 1879
35
#include
using namespace std;
class A
{
private:
int m_value;
public:
A (int v) : m_value (v) { std::cout << "ctor" << std::endl; }
~A () { std::cout << "dtor" << std::endl; }
int getValue () { return m_value; }
};
#define SIZE 10
int main ()
{
// init
A* array = (A*)new char[sizeof (A) * SIZE];
for (int i = 0; i < SIZE; ++i)
new (&array[i]) A (5);
for (int i = 0; i < SIZE; ++i)
std::cout <
g****g
发帖数: 310
36
绝对没必要,也不应该写这类代码。根本没有任何速度上的提升。(如果有,那么是在
你做梦的时候)
unsigned long avg1=0, avg2=0;
for (int n=0;n<1000000; n++)
{
int j = 0, i=0;
a = rdtsc();
i+= !(!(j));
b=rdtsc()-a;
avg1+=b;
j=0; i=1;
a = rdtsc();
if( j!=0 ) i++;
b=rdtsc()-a;
avg2+=b;
j++;i++;

}
std::cout << "Take:" << avg1/1000000 << std::endl;
std::cout << "Take:" << avg2/1000000 << std::endl;
两者的结果基本相同。
b***y
发帖数: 2799
37
来自主题: Programming版 - [合集] 为什么10进制输出是负的?
☆─────────────────────────────────────☆
grasssu (没有昵称) 于 (Thu Nov 13 01:27:05 2008) 提到:
VC 8编译下列程序
//求文件大小
ifstream is( "Cars.mkv" );
is.seekg (0, ios::end);
streampos length = is.tellg();
//assert ( length > 0 ); //failed
cout.flags(ios::hex);
cout << length << endl; //输出正的 89c01076, 这个数字换成十进制是
2311065718是正确的。
cout.flags(ios::dec);
cout << length << endl; //输出-1983901578
为什么10进制就是负数呢?我怎么才能得到正确结果?
在ubuntu上面得到结果就是正确的。VC8为什么这么奇怪?
☆─────────────────────────────────────☆
redroof (yellow
b***y
发帖数: 2799
38
来自主题: Programming版 - [合集] 问一个在c++关于for的问题。
☆─────────────────────────────────────☆
bsaint (bsaint) 于 (Mon Sep 26 13:37:48 2005) 提到:
碰到一个非常奇怪的问题;
如果代码是
for ( p=0; p<=30; p=p+0.2 )
cout << p << endl;
最后一个p输出的是30
但是如果代码换成
for ( p=0; p<=40; p=p+0.2 )
cout << p << endl;
最后一个p输出的是39.8
原本自己觉得怎么都应该是40*5+1个循环。
但是最后输出的p就是39.8。那么就是39。8×5+1个循环。为什么会得到结果?
我定义的p是double类型
到底是那里出了问题?
☆─────────────────────────────────────☆
goyacc (ken) 于 (Mon Sep 26 14:11:57 2005) 提到:
becaue you compare double, man, it is unpredictable.
they are not equal since
S******n
发帖数: 489
39
来自主题: Programming版 - 问一个for循环的问题
for (double i = 0.1; i < 10; i = i + 0.1)
cout << i << endl;
for (double i = 1; i < 10; i ++)
cout << i << endl;
为什么第二个for循环输出1到9,而第一个for循环输出0.1到10.0呢?
e****d
发帖数: 333
40
来自主题: Programming版 - 请教一个简单字符串程序 (转载)
试试这个,有点笨,但是in place。
不知道能不能满足要求。
VC下编译通过。
#include
#include
using std::cout;
using std::endl;
using std::swap;
int main(){
enum {N=35};
char a[N]=" ab cd efg h i jk lmn op qr";
for(int k=0;k cout< }
cout< int flag=0;
int i=0;
int j=0;
while(j while(j if(a[j]!=' '){
flag=0;
swap(a[i],a[j]);
i++;
j++;
}
L*******s
发帖数: 63
41
来自主题: Programming版 - 请教sgi hash_map
编译器好像是 g++ 4.3.4
struct eqstr
{
inline bool operator()(const char* s1, const char* s2) const
{
return 0 == strcmp(s1, s2);
}
};
typedef __gnu_cxx::hash_map >, eqstr> MyTable;
现在有
MyTable t;
中途进行一系列添加操作
每隔一段时间进行以下输出
std::cout << t.size() << std::endl;
std::for_each(t.begin(), t.end(), display1);
display1如下:
void display1(std::pair pr)
{
std::cout << (pr.second ? "T " : "F ") << pr.first << std::endl;
}
我现
i********r
发帖数: 131
42
来自主题: Programming版 - C++怎么写任意重重循环?
thinking in c++11 and a more general solution:
#include
#include
using namespace std;
void do_something(const vector& vars)
{
cout << "do_something with loop variables: ";
for (auto& i: vars)
cout << i << " ";
cout << endl;
}
void myLoop(vector& vars)
{
do_something(vars);
}
template
void myLoop(vector& vars, unsigned int n, Args... args)
{
auto index = vars.size();
vars.push_back(0);
... 阅读全帖
i********r
发帖数: 131
43
来自主题: Programming版 - C++怎么写任意重重循环?
If the number of loops are only known at run time, the variadic template won
't work. The only way I can think of is recursion:
#include
#include
using namespace std;
void do_something(const vector& vars)
{
cout << "do_something with loop variables: ";
for (auto& i: vars)
cout << i << " ";
cout << endl;
}
// method 2:
void myLoop(const vector& inputs, vector& vars)
{
if (inputs.size() == vars.size()) {
... 阅读全帖
z****e
发帖数: 2024
44
来自主题: Programming版 - 一个C++语法问题
#include
using std::cout;
using std::endl;
main(){
int ip[4]={0,1,2,3};
int k=0;
cout< }
结果:
1 0 1
怎么解释呢?
早谢了。
N***m
发帖数: 4460
45
我在学c++,我不理解下面这段程序的输出。请指教!
程序输出和问题在最后。
#include
using namespace std;
class CVector{
int x,y;
public:
static int n;
CVector();
CVector(int,int);
~CVector(){n--;cout<<"destruction ("< CVector operator + (CVector b);
};
int CVector::n=0;
CVector::CVector()
{
x=0;
y=0;
n++;
cout<<"default construction ("< }
CVec
o****b
发帖数: 31
46
来自主题: Programming版 - 菜鸟求教,一个c++的困惑
#include
int _tmain(int argc, _TCHAR* argv[])
{


char ca2[]={'c','+','+','\0'};
char* ip=ca2;
std::cout< std::cout< return 0;
}
我认为ip是一个char的指针,为什么我直接输出指针,出来的结果是c++. 我原想是会
出来这个指针的
物理地址。这到底是怎么回事呀?谢谢大家了。
z****e
发帖数: 2024
47
来自主题: Programming版 - 菜鸟求教,一个c++的困惑
试试这个。
#include
using namespace std;
int main(int argc, char* argv[])
{


char ca2[]={'c','+','+','\0'};
char* ip=ca2;
cout< cout< return 0;
}
我感觉是iostream里面对运算符<<的重载导致的。
a********n
发帖数: 648
48
来自主题: Programming版 - 问一个C++文件读取的问题
下面这个简单程序,我创建一个文件并在里面存了8个数,10,20,...,80,然后需要从
第三个数起读2个数,应该是30,40。但是读出来却是7680,10240,不知道是不是
seekg()这个函数没有用对,折腾了很久,还是不对,不知道哪位大牛可以帮着看看。
谢谢了先。
int main()
{
int i, k;
//Create a file
fstream OUTPUT( "RESULT.dat", ios::out | ios::in );
if( !OUTPUT )
{
cerr << "File could not be opened." << endl;
exit( 1 );
}

//Input the data
for( i=1; i<=8; i++ )
{
k = i*10;
cout << " k = " << k << endl;
OUTPUT.write( reinterpret_cast
B*****t
发帖数: 335
49
来自主题: Programming版 - 一个c++ constructor的问题, thanks
找出下面的程序的毛病!
class Foo {
public:
Foo(int x, int y){
xx = x, yy = y;
}
Foo(int x) {
new(this) Foo(x*2, x*3);
}
int xx,yy;
};
int main() {
Foo fo(3);
cout< cout< return 0;
}
z****e
发帖数: 2024
50
来自主题: Programming版 - 虚函数access权限改变问题
class Base{
public:
virtual void Method();
};
void Base::Method(){cout<<"Base::method"< class D2:public Base{
private:
void Method(){cout<<"D2::method"< };
void peek(Base& b){
b.Method();
}
int main(){
D2 d;
peek(d);
}
>D2::method
为什么D2虚函数是私有,但是通过一个global函数,仍然有多态?
虚函数的访问权限改变,有作用吗?
早谢。
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)