我有头文件"testcode.h"
#ifndef TESTCODE_H
#define TESTCODE_H
class A
{
public:
A();
~A();
virtual void Foo();
public:
int mPublic;
protected:
int mProtected;
private:
int mPrivate;
};
class B : public A
{
public:
B();
~B();
void Foo();
};
#endif // TESTCODE_H
Run Code Online (Sandbox Code Playgroud)
和一个源文件
#include "TestCode.h"
int main(int argc, char* argv[])
{
A* b = new B();
b->Foo();
b->mPublic = 0;
b->mProtected = 0;
b->mPrivate = 0;
delete b;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我想知道当我调用"b-> Foo"时,调用类B的Foo函数而不是类A.但是,类B的Foo函数未被声明为虚拟.任何人都可以详细说明吗?
我试图将旧代码转换为ARC代码.但是,我在以下行收到构建错误
[[token retain] autorelease];
Run Code Online (Sandbox Code Playgroud)
我按以下顺序得到3个错误:
-'autorelease'不可用:在自动参考计数模式下不可用
- [rewriter]删除未使用的'autorelease'消息是不安全的; 它的接收器可能会被立即销毁
-ARC禁止'autorelease'的显式消息发送
如果我删除此特定行,则代码正确编译
我正在开发一个程序,它可以反转所有可以被特定数字整除的给定数字.
例如:input ="13694097"可分数= 3; 输入中可被3整除的数字为:3,6,9,9.因此反向应为9,9,6,3.如果我们替换当前数组中的那个,那么我们得到ouput ="19964037"
这是程序的代码.我正在尝试构建prorgram,但我一直得到以下错误:
#include <iostream>
using namespace std;
int convert_to_int(char s)
{
return s - '0';
}
void reverse_string(char *string, int length, int number)
{
char *start = string;
char *end = string+length-1;
while(true)
{
while((convert_to_int(*start) % number) != 0) {
start++;
}
while((convert_to_int(*end) % number) != 0) {
end--;
}
if(start >= end)
break;
else
{
// Swap numbers
char temp = *start;
*start = *end;
*end = temp;
}
}
return;
}
int main() …Run Code Online (Sandbox Code Playgroud)