小编jer*_*rry的帖子

使用非虚函数覆盖虚函数

我有头文件"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函数未被声明为虚拟.任何人都可以详细说明吗?

c++

4
推荐指数
1
解决办法
132
查看次数

自动释放不允许编译代码

我试图将旧代码转换为ARC代码.但是,我在以下行收到构建错误

[[token retain] autorelease];
Run Code Online (Sandbox Code Playgroud)

我按以下顺序得到3个错误:

-'autorelease'不可用:在自动参考计数模式下不可用

- [rewriter]删除未使用的'autorelease'消息是不安全的; 它的接收器可能会被立即销毁

-ARC禁止'autorelease'的显式消息发送

如果我删除此特定行,则代码正确编译

objective-c ios

2
推荐指数
1
解决办法
1456
查看次数

交换可分数并获得声明的无效错误

我正在开发一个程序,它可以反转所有可以被特定数字整除的给定数字.

例如: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)

c++ algorithm pointers

0
推荐指数
1
解决办法
43
查看次数

标签 统计

c++ ×2

algorithm ×1

ios ×1

objective-c ×1

pointers ×1